Overriding Non-Abstract Method with Abstract Method (ONAMAM)

Description:

ONAMAM checks for the overriding of non-abstract methods by abstract methods in a subclass.

Incorrect:

Shape = class abstract
    public 
      procedure draw();virtual;
end;
Curve = class(Shape)
    public 
      procedure draw();override;abstract;
end;
...
procedure Shape.draw();
begin
end;

Correct:

Shape = class abstract
    public 
      procedure draw();virtual;
end;
Curve = class(Shape)
    public 
      procedure draw();override;
end;
...
procedure Shape.draw();
begin
end;

procedure Curve.draw();
begin
end;

or

Shape = class abstract public procedure draw();virtual;abstract; end; Curve = class(Shape) public procedure draw();override;abstract; end;